import axios from 'axios';

// 创建axios实例
const request = axios.create({
  baseURL: 'http://localhost:8080', // 后端接口地址，确保与实际运行的后端地址一致
  timeout: 10000 // 请求超时时间，增加超时时间以应对可能的网络延迟
});

// 请求拦截器
request.interceptors.request.use(
  config => {
    // 添加token
    const token = localStorage.getItem('token');
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`;
    } else {
      // 如果没有token，添加一个默认的用户ID，用于测试
      config.headers['X-User-Id'] = '1';
    }

    // 添加请求时间戳，避免缓存
    if (config.method === 'get') {
      config.params = {
        ...config.params,
        _t: Date.now()
      };
    }

    console.log('请求配置:', config);
    return config;
  },
  error => {
    console.error('请求错误:', error);
    return Promise.reject(error);
  }
);

// 响应拦截器
request.interceptors.response.use(
  response => {
    const res = response.data;
    // 如果返回的状态码不是1，说明接口请求有误
    if (res.code !== 1) {
      // 可以根据具体业务逻辑处理错误
      return Promise.reject(new Error(res.msg || '请求失败'));
    }
    return res;
  },
  error => {
    return Promise.reject(error);
  }
);

// 用户相关接口
export const userApi = {
  // 用户登录
  login(data: { username: string; password: string }) {
    return request({
      url: '/user/login',
      method: 'post',
      data
    });
  },

  // 用户注册
  register(data: any) {
    return request({
      url: '/user/register',
      method: 'post',
      data
    });
  },

  // 获取用户信息
  getInfo() {
    return request({
      url: '/user/info',
      method: 'get'
    });
  },

  // 用户退出登录
  logout() {
    return request({
      url: '/user/logout',
      method: 'post'
    });
  },

  // 修改密码
  changePassword(data: { oldPassword: string; newPassword: string }) {
    return request({
      url: '/user/password',
      method: 'put',
      data
    });
  }
};

// 商家相关接口
export const merchantApi = {
  // 商家登录
  login(data: { username: string; password: string }) {
    return request({
      url: '/merchant/login',
      method: 'post',
      data
    });
  },

  // 获取商家信息
  getInfo() {
    return request({
      url: '/merchant/info',
      method: 'get'
    });
  },

  // 商家退出登录
  logout() {
    return request({
      url: '/merchant/logout',
      method: 'post'
    });
  },

  // 修改密码
  changePassword(data: { oldPassword: string; newPassword: string }) {
    return request({
      url: '/merchant/password',
      method: 'put',
      data
    });
  },

  // 分页查询用户列表
  getUserPage(params: { page: number; pageSize: number; username?: string; name?: string; phone?: string }) {
    return request({
      url: '/merchant/users',
      method: 'get',
      params
    });
  },

  // 更新用户状态
  updateUserStatus(id: number, status: number) {
    return request({
      url: `/merchant/users/${id}/status`,
      method: 'put',
      data: { status }
    });
  },

  // 获取用户详情
  getUserDetail(id: number) {
    return request({
      url: `/merchant/users/${id}`,
      method: 'get'
    });
  }
};

// 菜品相关接口
export const dishApi = {
  // 获取所有菜品
  getList() {
    return request({
      url: '/dish/list',
      method: 'get'
    });
  },

  // 根据ID获取菜品详情
  getById(id: number) {
    return request({
      url: `/dish/${id}`,
      method: 'get'
    });
  },

  // 分页获取菜品
  page(params: { page: number; pageSize: number; name?: string }) {
    return request({
      url: '/dish/page',
      method: 'get',
      params
    });
  },

  // 搜索菜品（使用分页接口）
  search(params: { page: number; pageSize: number; name: string }) {
    return request({
      url: '/dish/page',
      method: 'get',
      params
    });
  }
};

// 订单相关接口
export const orderApi = {
  // 获取用户订单列表
  getUserOrders(page: number, pageSize: number) {
    return request({
      url: '/order/userPage',
      method: 'get',
      params: {
        page,
        pageSize
      }
    });
  },

  // 提交订单
  submitOrder(data: any) {
    return request({
      url: '/order/submit',
      method: 'post',
      data
    });
  },

  // 获取订单详情
  getOrderDetail(id: number) {
    return request({
      url: `/order/detail/${id}`,
      method: 'get'
    });
  },

  // 取消订单
  cancelOrder(id: number) {
    return request({
      url: `/order/cancel/${id}`,
      method: 'put'
    });
  },

  // 确认收货（完成订单）
  completeOrder(id: number) {
    return request({
      url: `/order/complete/${id}`,
      method: 'put'
    });
  },

  // 支付订单
  payOrder(id: number) {
    return request({
      url: `/order/pay/${id}`,
      method: 'put'
    });
  },

  // 配送订单
  deliveryOrder(id: number) {
    return request({
      url: `/order/delivery/${id}`,
      method: 'put'
    });
  }
};

// 评价反馈相关接口
export const feedbackApi = {
  // 获取用户评价列表
  getUserFeedbacks(page: number, pageSize: number) {
    return request({
      url: '/feedback/user',
      method: 'get',
      params: {
        page,
        pageSize
      }
    });
  },

  // 提交评价
  submitFeedback(data: any) {
    return request({
      url: '/feedback',
      method: 'post',
      data
    });
  },

  // 获取评价详情
  getFeedbackById(id: number) {
    return request({
      url: `/feedback/${id}`,
      method: 'get'
    });
  },

  // 删除评价
  deleteFeedback(id: number) {
    return request({
      url: `/feedback/${id}`,
      method: 'delete'
    });
  }
};

export default request;